package com.Object类.hashCode;

public class hashcode_ {
    /**
     hashCode()方法：
     1.hashCode()方法返回当前对象的哈希值，哈希值是一个32位的整数；
     2.两个引用变量指向同一个对象，则哈希值肯定一样；
     3.两个引用变量指向不同对象，则哈希值是不一样的；

     4.哈希值主要根据对象的内存地址来计算的，所以哈希值不能完全等价与地址；
     */
    public static void main(String[] args) {
        A a1 = new A();  //创建一个对象a1
        A a2 = new A();  //创建一个对象a2
        A a3 = a1;       //a3指向a1，a1和a3指向同一个对象

        System.out.println(a1.hashCode());  //输出a1的哈希值
        System.out.println(a2.hashCode());  //输出a2的哈希值
        System.out.println(a3.hashCode());  //输出a3的哈希值
        System.out.println(a1.hashCode() == a3.hashCode());  //true，a1和a3指向同一个对象，所以哈希值相同
        System.out.println(a1.hashCode() == a2.hashCode());  //false，a1和a2指向不同的对象，所以哈希值不相同

    }
}

class A {
}
